<!DOCTYPE html>
<html>
<body>

<script type="text/javascript">
var x;

document.write("Comprobaremos los tipos de datos que soporta el operador + en JavaScript<br>");

document.write("<p>Sumamos dos enteros, 1 + 2</p>");
x = 1 + 2;
document.write(x);


document.write("<p>Sumamos dos flotantes, 1.0 + 2.0</p>");
x = 1.0 + 2.0;
document.write(x);


document.write("<p>Sumamos un entero y un flotante, 1 + 2.0</p>");
x = 1 + 2.0;
document.write(x);


document.write("<p>Sumamos dos strings, 'Hola ' + 'Mundo'</p>");
x = "Hola " + "Mundo";
document.write(x);


document.write("<p>Sumamos un string y un entero, 'Hola ' + 2</p>");
x = "Hola " + 2;
document.write(x);


document.write("<p>Sumamos un string y un float, 'Hola ' + 2.0</p>");
x = "Hola " + 2.0;
document.write(x);

document.write("<p>Sumamos dos arrays, (1,2,3) + (4,5,6)</p>");
var a = new Array(1,2,3);
var b = new Array(4,5,6);
document.write(a+b);
document.write("<br>En realidad lo que hace el operador + es transformar los arrays a strings y concatenarlos<br>");


document.write("<p>Sumamos int y array, (1,2,3) + 4</p>");
a = new Array(1,2,3);

document.write(a+4);
document.write("<br>Similar al caso anterior<br>");


document.write("<p>Sumamos dos booleanos, true + false</p>");
a = new Boolean(0)

document.write(a+5); //Cualquier número distinto de cero es true
document.write("<br>Se obtiene la suma de su representación numérica.<br><br><br>");


document.write("Otras combinaciones de NaN, undefined y booleanos. En los casos donde hay al menos un NaN o undefined, la operación devuelve Nan, no se transforman a string y se concatenan pues son palabras claves del lenguaje. <br> ")
document.write(NaN+5); 
document.write("<br>")
document.write(undefined+5); 
document.write("<br>")
document.write(null+5); 
document.write("<br>")
document.write(true+5); 
document.write("<br>")
document.write(false+5);
document.write("<br>")
document.write(undefined+undefined);  
document.write("<br>")
document.write(NaN+NaN); 
</script>

</body>
</html>
